<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Promise + Event Loop</title>
</head>

<body>
    <script>
        // 前端环境下

        // Promise 异步任务同步化标准解决方案
        // but promise1--Promise 构造函数的运行 仍是 同步任务
        // Promise 自己是同步的构造函数 用来封装 异步任务
        const promise1 = new Promise((resolve, reject) => {
            console.log('p1')
            // setTimeout(() => {
            //     resolve()
            // }, 2000)
        })
        // promise 的 三种状态：PENDING、FULFILLED、REJECTED
        // pending 处理中 -- 等一个状态的变化
        // resolved(fulfilled) -- 异步操作成功
        // rejected -- 异步操作失败

        // 同步任务全部执行后 看 event loop 里有什么在等 再执行异步任务
        promise1 // 这里是异步 
            // 等待时 then 进 event loop 了
            // 等待单线程同步代码去全部执行后 看resolve再执行 
            .then(() => {
                console.log('p1.then')
            })
        // 同步任务
        console.log('outer', promise1)
    </script>
</body>

</html>